2026年全国青少年信息素养大赛星火征途C++编程挑战赛
复赛
真题
初中
2026
2026-07-03 13:37:01
467次
一、单选题
二、多选题
在抗日战争时期的敌后根据地,军民团结一心,建立了严密的后勤保障网。为了防范敌军轰炸,兵工厂常将珍贵的弹药囤积在只能单向进出的隐蔽防空洞中,这意味着最后搬入洞中的弹药箱,在部队紧急调拨时会被最先搬出来。而在根据地的兵站外,由广大群众组成的“支前独轮车运输队”则按照先来后到的顺序,依次排队领取并前送粮草物资。伟大的抗战胜利离不开军民无间的紧密配合和高效的物资调度。若我们在现代信息系统中模拟上述“防空洞存取弹药”(栈)与“车队排队领物”(队列)的过程,需要用到基础的数据结构。以下关于栈和队列的说法中,正确的是?
| A. 栈遵循后进先出(LIFO)原则 |
B. 队列遵循先进先出(FIFO)原则 |
| C. 栈只能用数组实现,队列只能用链表实现 |
D. 栈和队列的插入删除操作都限定在同一端进行 |
【知识点】 全国青少年信息素养大赛C++编程挑战赛
1935 年 1 月,中共中央在贵州遵义召开了具有伟大转折意义的遵义会议。为了纪念遵义会议胜利召开,某小学开展“重走长征路 学好编程课”主题活动,同学们在信息技术课上学习C++ 程序结构。学员小红做了如下笔记,以下关于 C++ 程序结构的说法中,正确的是( )
| A. 一个完整可执行的 C++ 程序必须包含且仅包含一个 main 函数 |
B. 除 #include、#define 等预处理指令外,每条 C++ 语句都以分号 ; 作为结束标志 |
| C. 无论 main 函数在源文件中的位置如何(位于开头、中间或末尾),程序都从 main 函数开始执行 |
D. C++ 程序不区分字母大小写,例如 main 与 Main、int 与 Int 是相同的标识符 |
【知识点】 全国青少年信息素养大赛C++编程挑战赛
三、编程题
长征路上的学习之旅
时间限制 1s
内存限制 256M
题目描述
在一条东西向的长征路上,分布着 A 座革命纪念馆和 B 座烈士陵园。以道路最西端为坐标原点,第 i 座革命纪念馆位于坐标 s_i 处,第 j 座烈士陵园位于坐标 t_j 处。为了传承红色基因,红军后代小分队计划开展红色教育活动。每个小分队都在指定位置驻扎,并有一定的探索半径限制。
你需要回答以下 Q 个询问:
第 k 次询问:红军小分队在坐标 x_k 处驻扎,探索半径为 R_k,问在探索范围内,即坐标在 [x_k - R_k, x_k + R_k] 区间内,有多少座建筑(纪念馆和陵园)?
输入格式
第 1 行:三个正整数 A B Q,分别表示纪念馆数量、陵园数量、询问次数。
第 2 行:A 个正整数 s_1, s_2, ..., s_A,表示各纪念馆坐标。
第 3 行:B 个正整数 t_1, t_2, ..., t_B,表示各陵园坐标。
接下来 Q 行:每行 2 个正整数 x_k R_k,表示驻扎位置和探索半径。
输出格式
输出 Q 行,第 k 行输出第 k 次询问的答案。
数据范围提示
坐标和半径可能达到 10^10,需要使用 long long。
输入样例1
2 2 3 10 30 20 40 20 10 15 5 50 15
输出样例1
3 2 1
输入样例2
3 4 5 100 300 600 200 400 700 900 250 200 100 50 500 250 700 100 500 500
输出样例2
4 1 4 2 7
输入样例3
3 2 6 100 500 1000 300 700 100 0 200 50 100 200 500 200 600 500 50 100
输出样例3
1 0 2 3 5 1
【知识点】 全国青少年信息素养大赛C++编程挑战赛
红军物资均衡分配
时间限制 1s
内存限制 256M
题目描述
长征途中,红军有两支纵队正在行军。后方有 n 件物资需要分配给前线部队。每件物资可以有三种分配方式:
1. 分配给第一纵队;
2. 分配给第二纵队;
3. 暂时留作战略预备。
由于运输能力有限,最多只能留 m 件物资作为预备。
为了保持两支纵队的公平,要求两支纵队获得的物资总重量必须相等。物资重量为w1, w2, ..., wn。
问:有多少种分配方式使得两支纵队获得的总重量相等,且预备物资不超过 m 件?
注意:两边都不分配,即所有物资都留作预备,也算一种方案,前提是 n <= m。
输入格式
第 1 行:两个正整数 n m,分别表示物资总数、预备上限。
第 2 行:n 个正整数 w_1, w_2, ..., w_n,表示各物资重量,空格分隔。
输出格式
输出一个整数,表示满足条件的分配方案总数。
输入样例1
3 3 1 2 3
输出样例1
3
输入样例2
3 1 1 2 3
输出样例2
2
输入样例3
4 0 2 3 5 10
输出样例3
2
【知识点】 全国青少年信息素养大赛C++编程挑战赛
长征里程计算
时间限制 1s
内存限制 256M
题目描述
红军从江西瑞金出发,开始了举世闻名的两万五千里长征。出发之初,部队还需要适应高强度行军,第一天只行进了 x 公里;随着将士们体能的锻炼和路线的熟悉,之后每一天都比前一天多行进 y 公里。
请你帮助史料研究员计算两个数据:
1. 第 n 天这一天,红军行军的里程数;
2. 前 n 天累计的总行军里程。
由于真实行军数据精确到小数(如 30.5 公里),本题中 x、y 均为实数(可能含小数)。
输入格式
一行三个数 x y n,用空格分隔,分别表示第一天行军里程、每天增加的里程、第几天。x、y 为实数,n 为整数。
输出格式
一行两个数,用一个空格分隔:
1. 第 n 天的行军里程;
2. 前 n 天累计的总行军里程。
两个数都必须保留 2 位小数。
补充校验样例
无本题官方样例,以下样例用于自测。
5 2.5 3
50 99.00
【知识点】 全国青少年信息素养大赛C++编程挑战赛
革命烈士编号
时间限制 1s
内存限制 256M
题目描述
某革命烈士纪念馆为每位烈士分配了一个唯一的编号。现在需要找出在区间 [a, b] 内的所有“红色素数”。一个数被称为“红色素数”,当且仅当:
1. 它是一个素数;
2. 它的各位数字之和也是素数。
输入格式
一行两个整数 a b,表示查询区间。
输出格式
一行若干个整数,表示所有红色素数,按从小到大顺序输出,空格分隔。如果没有则输出 NO。
输入样例1
10 50
输出样例1
11 23 29 41 43 47
输入样例2
1 20
输出样例2
2 3 5 7 11
【知识点】 全国青少年信息素养大赛C++编程挑战赛
